Natural and manmade systems include interrelated entities working together in typically complex manners. System models provide an abstraction of the system for better understanding of the entities and their relationships. Models are used in a variety of disciplines to identify problems or inefficiencies in a particular system, anticipate failures in the system so that the system can be reconfigured or provide insight as to why a particular failure occurred. In the field of architecture, for example, computer models aid architectural engineers in visualizing how structural members of a building physically fit together and how the members statically and dynamically interact under various conditions. These models can help the engineer minimize the potential for catastrophic building failure.
Over the past several decades, information technology (“IT”) systems have become important to most private and governmental organizations. For most large organizations, IT systems are essential for the day-to-day operations of the organization. Many IT systems evolve in a hodge-podge manner, with various computers and software programs being deployed at different times, leading to a highly heterogeneous system. Without careful planning, the installation of new computers and software applications can lead to instability in the IT system, causing computer crashes, program crashes and other errors. To further complicate matters, IT systems are prone to communication outages, malicious code outbreaks, incompatible software installations by users and a variety of other problems. An error or instability in one portion of the IT system can, at one end of the spectrum, cause annoyance for a small number of users and, at the other end, cripple the organization.
Because IT environments augment and evolve, modeling these environments to identify or predict problems can be time consuming and difficult. In particular, identifying and managing changing relationships between entities in the IT environment is problematic. Two primary methods are currently employed to model IT environments. The first method involves diagramming the IT environment using a computer drafting program such as Microsoft VISIO (Microsoft and VISIO are trademarks of Redmond, Wash. based Microsoft Corp.) or listing hardware and software using a spreadsheet. The network diagram or spreadsheet provides an inventory of hardware assets and software programs that exist in the IT environment. This solution is generally insufficient for managing relationships between entities, particularly in large IT systems, because the graphical representations or spreadsheet data must be manually deciphered to derive relationships. Another problem with modeling an IT environment through documents is that potentially hundreds of IT personnel need to update those documents. If there are a large number of documents it can be difficult to cross-reference the documents, provide version control for the documents and control document workflow among multiple authors.
The second solution involves maintaining a relational database that includes entries for machines and software programs. The relational database can define relationships through associations between database entries according to a database schema, with the database schema being based on known relationships. As new relationships develop or old relationships disappear, the database schema, and potentially the SQL statements required to utilize the underlying data, must typically be updated. This can be a time consuming and error prone process.